package com.chushouya.common.support;

import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.Parameter;

import java.util.ArrayList;
import java.util.List;

/**
 * swagger请求头信息
 * @author leejean team
 */
public class SwaggerHeaders {

    /**
     * 构建请求头参数
     */
    public static List<Parameter> buildAdminHeaderList() {
        final List<Parameter> parameterList = new ArrayList<>();
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.TOKEN).description("用户token")
                .modelRef(new ModelRef("string")).defaultValue("").parameterType("header")
                .required(false).build());
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.OS_TYPE).description("操作系统")
                .modelRef(new ModelRef("string")).defaultValue("Window").parameterType("header")
                .required(false).build());
        return parameterList;
    }

    public static List<Parameter> buildApiHeaderList() {
        final List<Parameter> parameterList = new ArrayList<>();
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.TOKEN).description("用户token")
                .modelRef(new ModelRef("string")).defaultValue("").parameterType("header")
                .required(false).build());
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.TIMESTAMP).description("请求时间戳")
                .modelRef(new ModelRef("string")).defaultValue(String.valueOf(System.currentTimeMillis())).parameterType("header")
                .required(false).build());

        // 客户端信息
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.OS_TYPE).description("操作系统类型(Android，IOS，Window，Mac)")
                .modelRef(new ModelRef("string")).defaultValue("Android").parameterType("header")
                .required(false).build());
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.OS_VERSION).description("操作系统版本")
                .modelRef(new ModelRef("string")).defaultValue("6.0.0").parameterType("header")
                .required(false).build());
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.PLATFORM).description("操作系统")
                .modelRef(new ModelRef("string")).defaultValue("app").parameterType("header")
                .required(false).build());
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.APP_VERSION).description("客户端版本")
                .modelRef(new ModelRef("string")).defaultValue("1.0.0").parameterType("header")
                .required(false).build());
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.DEVICE_ID).description("设备序列号")
                .modelRef(new ModelRef("string")).defaultValue("000000").parameterType("header")
                .required(false).build());

        return parameterList;
    }

    public static List<Parameter> buildOpenApiHeaderList() {
        final List<Parameter> parameterList = new ArrayList<>();
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.TIMESTAMP).description("请求时间戳")
                .modelRef(new ModelRef("string")).defaultValue(String.valueOf(System.currentTimeMillis())).parameterType("header")
                .required(false).build());
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.SIGN).description("签名")
                .modelRef(new ModelRef("string")).defaultValue("skip-sign").parameterType("header")
                .required(false).build());
        parameterList.add((new ParameterBuilder()).name(RequestHeaders.PARTNER_ID).description("合作商ID")
                .modelRef(new ModelRef("string")).defaultValue("1100").parameterType("header")
                .required(false).build());
        return parameterList;
    }
}
